This patch change the vmx mmio handler to static.
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Mon, 7 Nov 2005 15:35:46 +0000 (16:35 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Mon, 7 Nov 2005 15:35:46 +0000 (16:35 +0100)
Signed-off-by: Yunhong Jiang <yunhong.jiang@intel.com>
Signed-off-by: Xin Li <xin.b.li@intel.com>
xen/arch/x86/vmx_intercept.c
xen/arch/x86/vmx_vlapic.c
xen/include/asm-x86/vmx_intercept.h
xen/include/asm-x86/vmx_vlapic.h

index d452f7b792166c72ceb77ec429b83113b324b333..3dc4c018a2608f41998db6d82593b170f0284c17 100644 (file)
 
 #ifdef CONFIG_VMX
 
-struct vmx_mmio_handler vmx_mmio_handers[VMX_MMIO_HANDLER_NR] =
+extern struct vmx_mmio_handler vlapic_mmio_handler;
+
+#define VMX_MMIO_HANDLER_NR 1
+
+struct vmx_mmio_handler *vmx_mmio_handlers[VMX_MMIO_HANDLER_NR] =
 {
-    {
-        .check_handler = vlapic_range,
-        .read_handler  = vlapic_read,
-        .write_handler = vlapic_write
-    }
+    &vlapic_mmio_handler
 };
 
 static inline void vmx_mmio_access(struct vcpu *v,
@@ -134,16 +134,16 @@ int vmx_mmio_intercept(ioreq_t *p)
 {
     struct vcpu *v = current;
     int i;
-    struct vmx_mmio_handler *handler = vmx_mmio_handers;
 
     /* XXX currently only APIC use intercept */
     if ( !vmx_apic_support(v->domain) )
         return 0;
 
     for ( i = 0; i < VMX_MMIO_HANDLER_NR; i++ ) {
-        if ( handler[i].check_handler(v, p->addr) ) {
+        if ( vmx_mmio_handlers[i]->check_handler(v, p->addr) ) {
             vmx_mmio_access(v, p,
-              handler[i].read_handler, handler[i].write_handler);
+                            vmx_mmio_handlers[i]->read_handler,
+                            vmx_mmio_handlers[i]->write_handler);
             return 1;
         }
     }
index 4d45fcd3e6ee88948e3f9479ba29b032a68af6ac..27fbe8580b3a731e2397c53e6083245011bee729 100644 (file)
@@ -543,8 +543,8 @@ void vlapic_read_aligned(struct vlapic *vlapic, unsigned int offset,
     }
 }
 
-unsigned long vlapic_read(struct vcpu *v, unsigned long address,
-            unsigned long len)
+static unsigned long vlapic_read(struct vcpu *v, unsigned long address,
+                                 unsigned long len)
 {
     unsigned int alignment;
     unsigned int tmp;
@@ -585,8 +585,8 @@ unsigned long vlapic_read(struct vcpu *v, unsigned long address,
     return result;
 }
 
-unsigned long vlapic_write(struct vcpu *v, unsigned long address,
-                  unsigned long len, unsigned long val)
+static void vlapic_write(struct vcpu *v, unsigned long address,
+                         unsigned long len, unsigned long val)
 {
     struct vlapic *vlapic = VLAPIC(v);
     unsigned int offset = address - vlapic->base_address;
@@ -758,10 +758,9 @@ unsigned long vlapic_write(struct vcpu *v, unsigned long address,
         printk("Local APIC Write to read-only register\n");
         break;
     }
-    return 1;
 }
 
-int vlapic_range(struct vcpu *v, unsigned long addr)
+static int vlapic_range(struct vcpu *v, unsigned long addr)
 {
     struct vlapic *vlapic = VLAPIC(v);
 
@@ -773,6 +772,12 @@ int vlapic_range(struct vcpu *v, unsigned long addr)
     return 0;
 }
 
+struct vmx_mmio_handler vlapic_mmio_handler = {
+    .check_handler = vlapic_range,
+    .read_handler = vlapic_read,
+    .write_handler = vlapic_write
+};
+
 void vlapic_msr_set(struct vlapic *vlapic, uint64_t value)
 {
     /* When apic disabled */
index 8ae465c3da5b853c01e01b2c8ebce9edb0f1fa72..d832ecf12c113cc54242a621a50b849cd1fcbc61 100644 (file)
@@ -18,10 +18,10 @@ typedef unsigned long (*vmx_mmio_read_t)(struct vcpu *v,
                                          unsigned long addr,
                                          unsigned long length);
 
-typedef unsigned long (*vmx_mmio_write_t)(struct vcpu *v,
-                                         unsigned long addr,
-                                         unsigned long length,
-                                         unsigned long val);
+typedef void (*vmx_mmio_write_t)(struct vcpu *v,
+                                 unsigned long addr,
+                                 unsigned long length,
+                                 unsigned long val);
 
 typedef int (*vmx_mmio_check_t)(struct vcpu *v, unsigned long addr);
 
@@ -43,10 +43,6 @@ struct vmx_mmio_handler {
     vmx_mmio_write_t write_handler;
 };
 
-#define VMX_MMIO_HANDLER_NR 1
-
-extern struct vmx_mmio_handler vmx_mmio_handers[VMX_MMIO_HANDLER_NR];
-
 /* global io interception point in HV */
 extern int vmx_io_intercept(ioreq_t *p, int type);
 extern int register_io_handler(unsigned long addr, unsigned long size,
index c8b4dde3a7c2b6da5dba7aa9ac6d08954c681d98..24a09e0096a149b488eaf563968910b4965139d5 100644 (file)
@@ -225,14 +225,6 @@ extern int vlapic_init(struct vcpu *vc);
 
 extern void vlapic_msr_set(struct vlapic *vlapic, uint64_t value);
 
-int vlapic_range(struct vcpu *v, unsigned long addr);
-
-unsigned long vlapic_write(struct vcpu *v, unsigned long address,
-                           unsigned long len, unsigned long val);
-
-unsigned long vlapic_read(struct vcpu *v, unsigned long address,
-                          unsigned long len);
-
 int vlapic_accept_pic_intr(struct vcpu *v);
 
 struct vlapic* apic_round_robin(struct domain *d,